﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _18_事件基础
{
    class Mon
    {
        //1.定义一个事件变量(受委托类型的定义约束)，事件只能被类的外部绑定方法，被类的内部调用触发
        public event Action Eat;
        public void Cook()
        {
            Console.WriteLine("妈妈：我做好饭了! 快来吃饭吧");
            //3.调用事件
            Eat.Invoke();
        }
    }

    internal class Program
    {
        static void Main(string[] args)
        {
            Mon mon = new Mon();
            //2.绑定事件
            mon.Eat += new Action(DadEat);
            mon.Eat += new Action(SonEat);
            //4.调用方法
            mon.Cook();
            //练习题
            //通过事件实现如下效果：现有一个人，一群鸟，人有一把手枪，当人开枪时，所有的鸟都被吓飞了。 
            //示例:
            //人开枪了
            //鸟1飞走了
            //鸟2飞走了
            //鸟3飞走了
            Console.ReadKey();
        }
        public static void DadEat()
        {
            Console.WriteLine("爸爸：好的，我这就来! ");
        }
        public static void SonEat()
        {
            Console.WriteLine("儿子：我打完这一局再吃!");
        }


    }
}
